一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分)
在考生目录下完成如下操作:
1. 打开数据库SCORE_MANAGER, 该数据库中含三个有联系的表STUDENT、SCORE1和COURSE, 根据已经建立好的索引, 建立表之间联系。
2. 为COURSE表增加字段:开课学期(N,2,0)。
3. 为SCORE1表"成绩"字段设置字段有效性规则: 成绩>=0,出错提示信息是: "成绩必须大于或等于零"。
4. 将SCORE1表"成绩"字段的默认值设置为空值(NULL)。
解答:
单击“文件”菜单中“打开”命令,在出现的“打开”对话框中文件类型选择“数据库”,单击数据库“SCORE_MANAGER”,单击“确定”,进入数据库设计器,通过拖放索引建立表间联系,用鼠标右键单击表“COURSE”,在弹出的快捷菜单中单击“修改”,进入表设计器,按要求增加“开课学期”字段,单击“成绩”字段,输入字段有效性规则和默认值。
二、简单应用(2小题,每题20分,计40分)
在考生目录下完成如下简单应用:
1. 在SCORE_MANAGER数据库中查询学生的姓名和年龄(计算年龄的公式是:2003-Year(出生日期),年龄作为字段名),结果保存在一个新表NEW_TABLE1中。使用报表向导建立报表NEW_REPORT1,用报表显示NEW_TABLE1的内容。报表中数据按年龄升序排列,报表标题是"姓名-年龄",其余参数使用缺省参数。
解答:
进入查询设计器,在字段选取时,“姓名”字段直接添加,然后在“函数和表达式”输入框输入“2003-year(出生日期) as 年龄”,再添加到选择字段列表中,设置输出设置后运行。也可以直接在命令窗口输入如下命令:
Select 姓名,2003-year(出生日期) as 年龄 from student into table new_table1
进入报表向导后按试题要求操作即可。
2. 在SCORE_MANAGER数据库中查询没有选修任何课程的学生信息,查询结果包括"学号"、"姓名"和"系部"字段,查询结果按学号升序保存在一个新表NEW_TABLE2中。
解答:
本题最好使用命令方法:
SELECT Student.学号, Student.姓名, Student.系部 FROM score_manager!student;
WHERE Student.学号 NOT IN (select dist 学号 from score1) Into table NEW_TABLE2
三、综合应用(1小题,计30分)
SCORE_MANAGER数据库中含有三个数据库表STUDENT、SCORE1和COURSE。为了对SCORE_MANAGER数据库数据进行查询,设计一个如图所示的表单Myform1(控件名为form1,表单文件名myform1.scx)。表单的标题为"成绩查询"。
表单左侧有文本"输入学号(名称为Label1的标签)"和用于输入学号的文本框(名称为Text1)以及"查询"(名称为Command1)和"退出"(名称为Command2)两个命令按钮以及1个表格控件。
表单运行时,用户首先在文本框中输入学号,然后单击"查询"按钮,如果输入学号正确,在表单右侧以表格(名称为Grid1)形式显示该生所选课程名和成绩,否则提示"学号不存在,请重新输入学号"。
单击"退出"按钮,关闭表单。

解答:
1、对于将查询结果反应到表格控件中,一般选择查询结果为临时表。
2、要求判断当前学号是否存在所以此时可用:Locate(顺续查找) 加 Found()(最后一次查询是否成功)
“查询”按钮的Click事件代码为:
a=alltrim(thisform.text1.value)
locate for 学号=a
if found()
thisform.grid1.recordsourcetype=4
thisform.grid1.recordsource=”select 课程名,成绩 from score1 inner join course on course.课程号=score1.课程号 where score1.学号=a into cursor tmp”
else
messagebox(“学号不存在,请重新输入”)
endif
“退出”按钮的Click事件代码为:
thisform.release
附相关数据表:

模拟试题]
2010年计算机等考二级VFP上机第一套冲刺模拟及答案